<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>出库记录</title>
    <script type="text/javascript">
      var newDeliveryWin;
      var editDeliveryWin;
      var deliveryOrderId;
      var editDeliveryFromSaleOrderWin;
      Ext.onReady(function(){
        var saleOrderNumber = Ext.create('Ext.form.field.Text', {
          fieldLabel: '销售单号',
          name: 'sale_order_number',
          anchor: '100%'
        });

        var orderNumber = Ext.create('Ext.form.field.Text', {
          fieldLabel: '出库单号',
          name: 'order_number',
          anchor: '100%'
        });

        var customer = Ext.create('Ext.form.ComboBox', {
          fieldLabel: '客户',
          store: customerStore,
          valueField: 'id',
          displayField: 'name',
          name: 'customer_id',
          loadingText: '搜索中...',
          pageSize: 10,          
          minChars: 0,
          anchor: '100%',
          listConfig: {
            getInnerTpl: function() {
              return '<div data-qtip="{number}">{name}</div>';
            }
          }
        });

        var beginDate = Ext.create('Ext.form.field.Date', {
          fieldLabel: '出库日期',
          name: 'begin_date',
          id: 'begin_date',
          format: 'Y-m-d', //格式化日期
          //disabledDays: [0,6],	//不让选择周六，周日
          //disabledDaysText: "周末要休息",
          invalidText: "您输入的日期格式不对，正确格式为2010-01-01",          
          anchor: '100%',
          vtype: 'daterange',
          endDateField: 'end_date'
        });
        
        var endDate = Ext.create('Ext.form.field.Date', {
          fieldLabel: '至',
          name: 'end_date',
          id: 'end_date',
          format: 'Y-m-d', //格式化日期
          //disabledDays: [0,6],	//不让选择周六，周日
          //disabledDaysText: "周末要休息",
          invalidText: "您输入的日期格式不对，正确格式为2010-01-01",          
          anchor: '100%',
          vtype: 'daterange',
          startDateField: 'begin_date'
        });

        //产品
        var productCBB = Ext.create('Ext.form.ComboBox', {
          store: productStore,
          fieldLabel: '产品',
          emptyText: '请选择...',
          valueField: 'id',
          displayField: 'name',
          name: 'product_id',
          loadingText: '搜索中...',
          anchor: '100%',
          pageSize: 10,
          minChars: 0,
          listConfig: {
            loadingText: 'Searching...',
            getInnerTpl: function() {
              return '<div style="float:left; width:200px" data-qtip="{name}">{name:ellipsis(18)}</div><div style="float:left; width:110px">{number}</div>{is_suit}';
            }
          }
        });

        var auditingStatus = Ext.create('Ext.form.ComboBox', {
          fieldLabel: '审批状态',
          store: auditStatusStore,
          displayField:'text',
          typeAhead: true,
          queryMode: 'local',
          name: 'auditing_status',
          editable:false,
          valueField: 'value',
          anchor: '100%'
        });
        
        var submitButton = Ext.create('Ext.Button', {
          text: '搜索',
          iconCls: 'finding',
          handler: function(){
            deliveryOrderDS.removeAll();
            
            /*deliveryOrderDS.getProxy().extraParams.sale_order_number = saleOrderNumber.getValue();
            deliveryOrderDS.getProxy().extraParams.order_number = orderNumber.getValue();
            deliveryOrderDS.getProxy().extraParams.auditing_status = auditingStatus.getValue();
            deliveryOrderDS.getProxy().extraParams.product_id = productCBB.getValue();
            deliveryOrderDS.getProxy().extraParams.begin_date = beginDate.getRawValue();
            deliveryOrderDS.getProxy().extraParams.end_date = endDate.getRawValue();
            deliveryOrderDS.getProxy().extraParams.customer_id = customer.getValue();       
            deliveryOrderDS.load();*/
            
            deliveryOrderDS.getProxy().extraParams = queryFormPanel.getForm().getFieldValues();
            toolBar.moveFirst();
          }
        });

        var clearButton = Ext.create('Ext.Button', {
          text: '清空',
          handler: function(){
            queryFormPanel.form.reset();
          }
        });

        var queryFormPanel = Ext.create('Ext.form.Panel', {
          //baseCls: 'x-plain',
          //renderTo: 'query_form',
          fieldDefaults: {
            labelWidth: 60,
            labelAlign: 'right'
          },
          width: screenWidth-165,
          frame : true,
          border:false,
          items: [{
              xtype: 'fieldset',
              defaults: {width: 1150},
              title: '查询条件',
              border: true,
              items: [{
                  layout: 'column',
                  xtype: 'container',
                  items: [{
                      columnWidth: .17,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [saleOrderNumber]
                    }, {
                      columnWidth: .17,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [orderNumber]
                    }, {
                      columnWidth: .38,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [customer]
                    }, {
                      columnWidth: .15,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [auditingStatus]
                    }]
                },{
                  layout: 'column',
                  xtype: 'container',
                  items: [{
                      columnWidth: .17,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [beginDate]
                    }, {
                      columnWidth: .17,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [endDate]
                    }, {
                      columnWidth: .38,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [productCBB]
                    }, {
                      columnWidth: .13,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [submitButton]
                    }, {
                      columnWidth: .13,
                      layout: 'anchor',
                      xtype: 'container',
                      items: [clearButton]
                    }]
                }]
            }]
        });
        //显示出库操作时的窗口介面。
        //----------------------------------------------------------------------
        var deliveryOrderDS = Ext.create('Ext.data.Store', {
          //autoDestroy : true,
          model : 'DeliveryOrderModel',
          proxy : {
            type : 'ajax',
            url: '/delivery_order/getAllDelivery',
            reader : {
              type : 'json',
              root : 'root',
              totalProperty : 'totalProperty'// 数据集记录总数
            }
          },
          pageSize : pageSize,
          autoLoad : true
        });        

        var toolBar = Ext.create('Ext.toolbar.Paging', {
          pageSize: pageSize,
          store: deliveryOrderDS,
          displayInfo: true,
          displayMsg: "显示第 {0} 条到 {1} 条记录，一共 {2} 条",
          emptyMsg: "没有记录",
          items:["-",{
              text: '新增出库单',
              iconCls: 'addItem',
              disabled:true,
              handler : function(){
                newDeliveryWin = Ext.create('Ext.window.Window', {
                  layout: 'fit',
                  width: 810,
                  height: 500,
                  closeAction: 'destroy',
                  plain: true,
                  modal: true,
                  constrain:true,
                  //modal: true,
                  title: '添加出库单',
                  autoLoad: {
                    url: "/delivery_order/newDelivery",
                    scripts: true
                  }
                });
                newDeliveryWin.on("destroy",function(){
                  deliveryOrderDS.load();
                });
                newDeliveryWin.resizable = false;
                newDeliveryWin.show();
              }
            },'-',{
              text: '编辑',
              iconCls: 'editItem',
              handler : function(){
                var records = deliveryOrderGrid.getSelectionModel().getSelection();
                if (records.length == 0) {
                  return false;
                }else{
                  deliveryOrderId = records[0].get('id');
                  var currentSaleOrderNumber = records[0].get('sale_order_number');
                  var dealWithStatus = records[0].get('deal_with_status');
                  if(records[0].get('auditing_status') == '' || records[0].get('auditing_status') == null || records[0].get('auditing_status').indexOf('驳回新增') > -1){
                    editDeliveryFromSaleOrderWin = Ext.create('Ext.window.Window', {
                      layout: 'fit',
                      width: 917,
                      height: 510,
                      closeAction: 'destroy',
                      plain: true,
                      modal: true,
                      constrain:true,
                      //modal: true,
                      title: "编辑销售订单:'"+currentSaleOrderNumber+"'的出库单",
                      autoLoad: {
                        url: "/delivery_order/editDeliveryFromSaleOrder?id="+deliveryOrderId,
                        scripts: true
                      }
                    });
                    editDeliveryFromSaleOrderWin.on("destroy",function(){
                      deliveryOrderDS.load();
                    });
                    editDeliveryFromSaleOrderWin.resizable = false;
                    editDeliveryFromSaleOrderWin.show();
                  }else{
                    Ext.MessageBox.show({
                      title: '消息',
                      msg: "只有'驳回新增'或'暂存新增'的出库单可以进行编辑",
                      buttons: Ext.MessageBox.OK,
                      icon: Ext.MessageBox.INFO
                    });
                  }
                }   
              }
            },'-',{
              text: '撤消',
              iconCls: 'cancel',
              handler : function(){
                var records = deliveryOrderGrid.getSelectionModel().getSelection();
                if (records.length == 0) {
                  return false;
                }else{
                  if(records[0].get('deal_with_status') != '已撤消'){
                    var orderNumber = records[0].get('order_number')
                    deliveryOrderId = records[0].get('id');
                    Ext.MessageBox.confirm("提示","你确认要申请撤消订单号为： \""+orderNumber+"\" 的出库单吗？",function(btn){
                      if(btn=="yes"){
                        Ext.Ajax.request({
                          url : '/delivery_order/applyToCancel?id=' + deliveryOrderId,
                          success : function (result, request) {
                            deliveryOrderDS.load();
                          },
                          failure : function (result, request){
                            Ext.MessageBox.show({
                              title: '消息',
                              msg: "通讯失败，请从新操作",
                              buttons: Ext.MessageBox.OK,
                              icon: Ext.MessageBox.WARNING
                            });
                          },
                          method : 'GET'
                        });
                      }else{
                        //alert("no");
                      }
                    });
                  }
                }
              }
            },'-',{
              text: '打印配送单',
              iconCls: 'print',
              handler : function(){
                var records = deliveryOrderGrid.getSelectionModel().getSelection();
                if (records.length == 0) {
                  return false;
                }else{
                  if(records[0].get('auditing_status') != "" && records[0].get('auditing_status').indexOf('申请') == -1 && records[0].get('auditing_status').indexOf('撤消') == -1 && records[0].get('auditing_status').indexOf('驳回') == -1){
                    this.disable();
                    deliveryOrderId = records[0].get('id');
                    //LODOP.SET_PRINT_PAGESIZE(1,0,0,'A5')
                    LODOP.PRINT_INIT("");
                    LODOP.SET_PRINT_PAGESIZE(1,"210mm","148mm","")
                    //LODOP.SET_PRINT_PAGESIZE(1,"148mm","210mm","")
                    LODOP.ADD_PRINT_URL(20,'5%',"90%","100%",'http://'+window.location.host+'/delivery_order/delivery_order_print_header?sub_type=1&id='+deliveryOrderId);
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
                    LODOP.ADD_PRINT_TBURL(145,'5%',"90%","43%",'http://'+window.location.host+'/delivery_order/delivery_order_print_content?sub_type=1&id='+deliveryOrderId);
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",4);
                    LODOP.ADD_PRINT_URL(395,'5%',"90%","100%",'http://'+window.location.host+'/delivery_order/delivery_order_print_footer?sub_type=1&id='+deliveryOrderId);
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
                    LODOP.ADD_PRINT_TEXT(480,'8%',"80%","8%","第一联：成本（白） 第二联：财务（绿） 第三联：提货（粉） 第四联：客户（黄） 第五联：销售（兰）");
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
                    LODOP.ADD_PRINT_TEXT(500,'35%',"90%","8%","页号：第#页/共&页 打印日期："+getDate());
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",2);
                    LODOP.PREVIEW();
                    this.enable();
                    //window.open('/test/sale_order_print?id='+saleOrderId,'_blank','width=0,height=0,toolbar=no,menubar=no,location=no');
                  }
                }
              }
            },'-',{
              text: '打印提货单',
              iconCls: 'print',
              handler : function(){
                var records = deliveryOrderGrid.getSelectionModel().getSelection();
                if (records.length == 0) {
                  return false;
                }else{
                  if(records[0].get('auditing_status') != "" && records[0].get('auditing_status').indexOf('申请') == -1 && records[0].get('auditing_status').indexOf('撤消') == -1 && records[0].get('auditing_status').indexOf('驳回') == -1){
                    deliveryOrderId = records[0].get('id');
                    //LODOP.SET_PRINT_PAGESIZE(1,0,0,'A5')
                    LODOP.SET_PRINT_PAGESIZE(1,"210mm","148mm","")
                    //LODOP.SET_PRINT_PAGESIZE(1,"148mm","210mm","")
                    LODOP.ADD_PRINT_URL(20,'5%',"90%","100%",'http://'+window.location.host+'/delivery_order/delivery_order_print_header?sub_type=2&id='+deliveryOrderId);
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
                    LODOP.ADD_PRINT_TBURL(145,'5%',"90%","43%",'http://'+window.location.host+'/delivery_order/delivery_order_print_content?sub_type=2&id='+deliveryOrderId);
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",4);
                    LODOP.ADD_PRINT_URL(395,'5%',"90%","100%",'http://'+window.location.host+'/delivery_order/delivery_order_print_footer?sub_type=2&id='+deliveryOrderId);
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
                    LODOP.ADD_PRINT_TEXT(480,'8%',"80%","8%","第一联：成本（白） 第二联：财务（绿） 第三联：提货（粉） 第四联：客户（黄） 第五联：销售（兰）");
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",1);
                    LODOP.ADD_PRINT_TEXT(500,'35%',"90%","8%","页号：第#页/共&页 打印日期："+getDate());
                    LODOP.SET_PRINT_STYLEA(0,"ItemType",2);
                    LODOP.PREVIEW();
                    //window.open('/test/sale_order_print?id='+saleOrderId,'_blank','width=0,height=0,toolbar=no,menubar=no,location=no');
                  }
                }
              }
            }]
        })
        
        //生成要订单的产品的Grid
        var deliveryOrderGrid = Ext.create('Ext.grid.Panel', {
          title:'出库单列表',
          store: deliveryOrderDS,
          columns : [Ext.create('Ext.grid.RowNumberer'),{
              header: 'DB',
              dataIndex: 'id',
              width: 50
            },{
              header: '公司',
              dataIndex: 'company_name',
              width: 50
            },{
              header: '销售订单单号',
              dataIndex: 'sale_order_number',
              width: 210
            },{
              header: '销售订单状态',
              dataIndex: 'sale_order_status',
              width: 85,
              renderer: auditingStatusRender
            },{
              header: '出库单单号',
              dataIndex: 'order_number',
              width: 140
            },{
              header: '审批状态',
              dataIndex: 'auditing_status',
              width: 70,
              renderer: auditingStatusRender
            },{
              header: '处理状态',
              dataIndex: 'deal_with_status',
              width: 70,
              renderer: auditingStatusRender
            },{
              header: '调出仓库',dataIndex: 'warehouse_name',width: 100
            },{
              header: '到客户',
              dataIndex: 'customer_name',
              width: 190
            },{
              header: '要求出库日期',
              dataIndex: 'sale_action_date',
              renderer: Ext.util.Format.dateRenderer('Y-m-d'),width: 90
            },{
              header: '实际出库日期',
              dataIndex: 'action_date',
              renderer: Ext.util.Format.dateRenderer('Y-m-d'),width: 90
            },{
              header: '操作员',
              dataIndex: 'employee_name',
              width: 70
            },{
              header: '部门',
              dataIndex: 'department_name',
              width: 70
            },{
              header: '备注',
              dataIndex: 'description',
              width: 170
            },{
              header: '生成日期',
              dataIndex: 'created_at',
              renderer: Ext.util.Format.dateRenderer('Y-m-d H:i'),width: 115
            },{
              header: '修改日期',
              dataIndex: 'updated_at',
              renderer: Ext.util.Format.dateRenderer('Y-m-d H:i'),width: 115
            }],
          selModel :Ext.create('Ext.selection.CheckboxModel'),
          loadMask: true,
          //renderTo: 'delivery_list_grid',
          width: screenWidth-165,
          height: 320,
          frame: true,          
          tbar: toolBar
        });

        deliveryOrderGrid.on('itemdblclick', function(gridPanel, record,item,index,e,options){
          deliveryOrderId = record.get('id');
          var deliveryOrderNumber = record.get('order_number');
          //deliveryOrderDS.load();
          deliveryOrderDetailDS.removeAll();
          deliveryOrderDetailDS.getProxy().extraParams.delivery_order_id = deliveryOrderId;
          deliveryOrderDetailDS.load();
          deliveryOrderDetailGrid.setTitle("出库单："+deliveryOrderNumber+"，的详细信息");
        });

        //右键菜单，以弹出此订单相关的入库单
        //右键
        deliveryOrderGrid.on('itemcontextmenu', function(grid, record,item,index,e,options){
          deliveryOrderId = deliveryOrderDS.getAt(index).get('id');
          currentOrderNumber = deliveryOrderDS.getAt(index).get('order_number');
          e.preventDefault();
          rightClick.showAt(e.getXY());
        });

        var deliveryOrderHxItem = Ext.create('Ext.menu.Item', {
          text: '【变更历史】',
          //iconCls: 'album',
          handler: rightMenuDeliveryOrderHxFn
        });

        function rightMenuDeliveryOrderHxFn(){
          deliveryOrderHxWin = Ext.create('Ext.window.Window', {
            layout: 'fit',
            width: 960,
            height: 550,
            closeAction: 'destroy',
            plain: true,
            modal: true,
            constrain:true,
            draggable: false,
            //modal: true,
            title: '出库单：\"'+currentOrderNumber+'\"的变更记录',
            autoLoad: {
              url: "/delivery_order/hxListForDelivery?id="+deliveryOrderId,
              scripts: true
            }
          });
          deliveryOrderHxWin.on("destroy",function(){
            deliveryOrderDS.load();
          });
          deliveryOrderHxWin.resizable = false;
          deliveryOrderHxWin.show();
        }
        
        var rightClick = Ext.create('Ext.menu.Menu', {
          items: [deliveryOrderHxItem]
        });
        
        //--------------------------销售订单详细，双击后可显示数据----------------
        var deliveryOrderDetailDS = Ext.create('Ext.data.Store', {
          //autoDestroy : true,
          model : 'DeliveryOrderDetailModel',
          proxy : {
            type : 'ajax',
            url: '/delivery_order/getDeliveryOrderDetailsById',
            reader : {
              type : 'json',
              root : 'root',
              totalProperty : 'totalProperty'// 数据集记录总数
            }
          }
        });
        
        //生成要订单的产品的Grid
        var deliveryOrderDetailGrid = Ext.create('Ext.grid.Panel', {
          title:'出库单详细列表',
          store: deliveryOrderDetailDS,
          columns : [Ext.create('Ext.grid.RowNumberer'),
            { header: 'DB',
              dataIndex: 'id',
              width: 60
            },{
              header: '产品名称',
              dataIndex: 'product_name',
              width: 230
            },{
              header: '编号',dataIndex: 'product_number',width: 100
            },{
              header: '规格',
              dataIndex: 'product_spec',
              width: 80
            },{
              header: '数量',
              dataIndex: 'quantity',
              align: 'right',
              width: 80
            },{
              header: '套装或单品',
              dataIndex: 'is_suit',
              width: 70
            },{
              header: '备注',
              dataIndex: 'description',
              width: 150
            }],
          loadMask: true,
          width: screenWidth-165,
          height: dgHeight,
          frame: true
          //title: '进货品种列表',
          //plain:true,
          //plugins: checkColumn,
        });

        //总的panel
        var workbenchPanel = Ext.create('Ext.form.Panel', {
          width: screenWidth-160,
          height: totalHeight,autoScroll:true,
          frame:false,
          layout: {type: 'table',columns:1},
          items:[queryFormPanel,deliveryOrderGrid,deliveryOrderDetailGrid]
        });
        workbenchPanel.render("delivery_list");
        
      })
    </script>
  </head>
  <body>
    <div id="delivery_list"></div>
  </body>
</html>
